Quasar is a popular Vue UI library for developing good looking Vue apps.
In this article, we’ll take a look at how to create Vue apps with the Quasar UI library.
Tooltip
We can add a tooltip into our Vue app with Quasar’s q-tooltip
component.
For instance, we can write:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout view="lHh Lpr lFf" container style="height: 100vh;">
<div class="q-pa-md">
<q-btn label="Hover me" color="primary">
<q-tooltip>
Some text as content of Tooltip
</q-tooltip>
</q-btn>
<div
class="inline bg-amber rounded-borders cursor-pointer"
style="max-width: 300px;"
>
<div
class="fit flex flex-center text-center non-selectable q-pa-md"
>
hover me
</div>
<q-tooltip>
tooltip
</q-tooltip>
</div>
</div>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {}
});
</script>
</body>
</html>
We can put the q-tooltip
component inside the component or element that we want to show when we hover over them.
Also, we can control the tooltip open or closed state with the v-model
directive:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout view="lHh Lpr lFf" container style="height: 100vh;">
<div class="q-pa-md">
<div class="q-gutter-sm">
<q-btn color="primary" @click="showing = true" label="Show"></q-btn>
<q-btn
color="primary"
@click="showing = false"
label="Hide"
></q-btn>
</div>
<div
style="width: 200px; height: 70px;"
class="bg-purple text-white rounded-borders row flex-center q-mt-md"
>
Hover here or click buttons
<q-tooltip v-model="showing">Tooltip text</q-tooltip>
</div>
</div>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {
showing: false
}
});
</script>
</body>
</html>
We set the showing
state when we click on the Show or Hide buttons.
We can set the offset
prop to position the tooltip our way:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout view="lHh Lpr lFf" container style="height: 100vh;">
<div class="q-pa-md">
<q-btn color="primary">
Hover
<q-tooltip content-class="bg-indigo" :offset="[10, 10]">
tooltip
</q-tooltip>
</q-btn>
<q-btn color="primary">
Over
<q-tooltip content-class="bg-red" :offset="[10, 10]">
tooltip
</q-tooltip>
</q-btn>
</div>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {}
});
</script>
</body>
</html>
Tooltip Delay
We can set the tooltip delay with the delay
prop:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout view="lHh Lpr lFf" container style="height: 100vh;">
<div class="q-pa-md">
<div
style="width: 200px; height: 70px;"
class="bg-secondary text-white rounded-borders non-selectable row flex-center"
>
One second delay
<q-tooltip :delay="1000" :offset="[0, 10]">tooltip</q-tooltip>
</div>
</div>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {}
});
</script>
</body>
</html>
The delay
is in milliseconds.
Conclusion
We can add a tooltip into our Vue app with Quasar’a q-tooltip
component.